/**
 * Általános szörny osztály, minden működő szörny ennek a leszármazottja.
 */
public abstract class Monster extends Entity implements ITickable
{

  /**
   * A szörny halálát kezelő függvény szikla ráesés vagy másik szörnnyel való
   * találkozás esetén.  
   * Kitörli a tartalmazó mezőből a magára mutató referenciát.
   * @return Minden esetben true.
   */

  public boolean kill()
  {
    field.delete();
    alive = false;
    callObservers();
    return true;
  }

  /**
   * A szörny halálát kezelő függvény bomba robbanás esetén.
   * Kitörli a szörnyre mutató referenciát.
   * @return Mindig true.
   */

  public boolean explode()
  {
    field.delete();
    alive = false;
    callObservers();
    return true;
  }

  /**
   * A Player, vagy a szörny lépése által meghívott függvény
   * ami "aktiválja' a szörny működését, akkor
   * is ha az időzített léptetés miatt esetleg a Player nem halna meg a
   * találkozás esetén.
   */

  public void activate()
  {
      for(int j = 1; j <= 6; j++)
      {
          if (!field.getNeighbour(j).isEmpty())
          {
            field.getNeighbour(j).getEntity().eat();
          }
      }
      callObservers();
  }
}